//
//  SteveZPieView.m
//  03绘制图表
//
//  Created by apple on 15-6-7.
//  Copyright (c) 2015年 itcast. All rights reserved.
//  饼状图

#import "SteveZPieView.h"

@implementation SteveZPieView

- (void)drawRect:(CGRect)rect
{

    // 0. 提供数据
    NSArray* data = @[ @30, @15, @5, @17, @3, @10, @20 ];

    // 1. 获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 2. 循环绘制每一个扇形（"三角饼"）
    // 确定圆心
    // 这样计算圆心点是不对的，self.center是指当前view相对于父容器的中心店点
    // CGPoint centerP = self.center;
    CGPoint centerP = CGPointMake(rect.size.width * 0.5, rect.size.height * 0.5);
    // 确定半径(较短的边的一半)
    CGFloat radius = MIN(rect.size.width, rect.size.height) * 0.5;
    // 起始弧度
    CGFloat startAngle = 0;
    // 结束弧度
    CGFloat endAngle;

    for (int i = 0; i < data.count; i++) {

        // 计算每个扇形的结束弧度
        endAngle = ([data[i] intValue] / 100.0) * M_PI * 2 + startAngle;

        // 2.1 创建一个路径对象（画弧的一个路径对象）
        UIBezierPath* path = [UIBezierPath bezierPathWithArcCenter:centerP radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
        // 创建与中心点的连线
        [path addLineToPoint:centerP];

        CGContextSetLineWidth(ctx, 20);

        //        // 关闭路径
        //        [path closePath];

        // 2.2 把路径添加到上下文中
        CGContextAddPath(ctx, path.CGPath);

        [[UIColor colorWithRed:arc4random_uniform(256) / 255.0 green:arc4random_uniform(256) / 255.0 blue:arc4random_uniform(256) / 255.0 alpha:1.0] set];

        // 3. 渲染
        CGContextDrawPath(ctx, kCGPathFill);

        // 重新设置起始弧度
        startAngle = endAngle;
    }
}

// 绘制扇形演示
- (void)test1
{
    // 1. 获取图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 2. 创建一个路径对象
    UIBezierPath* path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150) radius:100 startAngle:0 endAngle:M_PI_2 clockwise:YES];
    // 从终点到圆心再连一个跟线
    [path addLineToPoint:CGPointMake(150, 150)];

    // 关闭路径
    //[path closePath];

    // 3. 把路径添加到上下文中
    CGContextAddPath(ctx, path.CGPath);

    // 4.执行渲染
    CGContextDrawPath(ctx, kCGPathFill);
}

@end
